package com.myStoreinfoProvider.service.impl;

import com.myStoreinfoProvider.mapper.MyStoreinfoMapper;
import com.myStoreinfoProvider.utils.RegxUtil;
import entity.ResponseMessage;
import entity.StatusCode;
import entity.Store;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import service.mystore.MyStoreinfoService;
import util.*;

import java.util.Map;

/**
 * @author oahner
 * @create 2022-04-14 10:51
 */
@Service
public class MyStoreinfoServiceImpl implements MyStoreinfoService {

    private Logger logger = Logger.getLogger(getClass());

    @Autowired
    private MyStoreinfoMapper mapper;


    /**
     * 获取我的门店信息
     * @param store
     * @return
     */
    @Override
    public ResponseMessage getMyStoreinfo(Store store) {
        logger.info("MyStoreinfoServiceImpl getMyStoreinfo params:store="+store);
        ResponseMessage msg = new ResponseMessage();
        msg.setFlag(false);
        msg.setCode(StatusCode.ERROR);
        try {
            if(null != store.getId() && !"".equals(store.getId())){
                if(null != store.getPassword() && !"".equals(store.getPassword())) {
                    store.setPassword(Md5Util.encryptToMD5(store.getPassword()));
                }
                Store myStore = mapper.selMyStoreinfo(store);
                if(null!=myStore){
                    msg.setFlag(true);
                    msg.setCode(StatusCode.OK);
                    msg.setMessage("get mystoreInfo success");
                    msg.setData(myStore);
                    logger.debug("MyStoreinfoServiceImpl getMyStoreinfo !null result:msg="+msg);
                }else{
                    msg.setMessage("get mystoreInfo is empty");
                    logger.debug("MyStoreinfoServiceImpl getMyStoreinfo null result:store="+store);
                }
            }else{
                msg.setMessage("get mystoreInfo id is empty");
                logger.debug("MyStoreinfoServiceImpl getMyStoreinfo null result:store="+store);
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setMessage("get mystroeInfo error");
            logger.error("MyStoreinfoServiceImpl getMyStoreinfo error parmas:store="+store,e);
        }
        return msg;
    }

    /**
     * 修改我的门店信息
     * @param store
     * @return
     */
    @Override
    public ResponseMessage updateMyStoreinfo(Store store) {
        logger.info("MyStoreinfoServiceImpl updateMyStoreinfo params:store="+store);
        ResponseMessage msg = new ResponseMessage();
        msg.setFlag(false);
        msg.setCode(StatusCode.ERROR);
        try {
            if(null!=store.getId() && !"".equals(store.getId()) && RegxUtil.checkMobile(store.getStoreMobile())) {
                store = (Store) CropStringUtil.cropString(store);
                Integer rows = mapper.updMyStoreinfo(store);
                if (rows > 0) {
                    msg.setFlag(true);
                    msg.setCode(StatusCode.OK);
                    msg.setMessage("update mystroeInfo success");
                    msg.setData(rows);
                    logger.debug("MyStoreinfoServiceImpl updateMyStoreinfo if(!null) result:msg=" + msg);
                } else {
                    msg.setMessage("update mystoreInfo is empty");
                    logger.debug("MyStoreinfoServiceImpl updateMyStoreinfo if(null) result:store=" + store);
                }
            }else{
                msg.setMessage("update mystoreInfo ID is empty");
                logger.debug("MyStoreinfoServiceImpl updateMyStoreinfo idnull result:store=" + store);
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setMessage("update mystoreInfo is error");
            logger.error("MyStoreinfoServiceImpl updateMyStoreinfo error parmas:store="+store,e);
        }
        return msg;
    }

    /**
     * 将门店图标名称上传至数据库
     * @param mul(图标),storeId(门店ID)
     * @return
     */
    public ResponseMessage myStoreLogUploda(MultipartFile mul,String storeId,String oldFileName){
        logger.info("MyStoreinfoServiceImpl myStoreLogUploda param:mul="+mul+",storeId="+storeId+",oldFileName="+oldFileName);
        ResponseMessage msg = new ResponseMessage();
        msg.setCode(StatusCode.ERROR);
        msg.setFlag(false);
        try {
            //文件格式检查
            Map<String, Object> imgCheckMap = ImgUtil.imgChecked(mul);
            if(imgCheckMap.get("flag").equals(true)) {
                //进行文件上传
                ResponseMessage uploadMsg = FileUpload.fileUpload(mul);
                DeleteFile.delStoreLogo(oldFileName);
                //获取上传后的文件名
                String logoName = uploadMsg.getData().toString();
                Store store = new Store();
                store.setLogo(logoName);
                store.setId(storeId);
                int i = mapper.updMyStoreinfo(store);
                if (i > 0) {
                    msg.setFlag(true);
                    msg.setCode(StatusCode.OK);
                    msg.setMessage("storeLogo upload success");
                    msg.setData(logoName);
                } else {
                    msg.setMessage("storeLogo upload fail");
                    logger.debug("MyStoreinfoServiceImpl myStoreLogUploda fail:mul=" + mul);
                }
            }else{
                msg.setMessage(imgCheckMap.get("msg").toString());
                logger.debug("MyStoreinfoServiceImpl myStoreLogUploda fail:mul=" + mul);
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setMessage("storeLogo upload fail");
            logger.error("MyStoreinfoServiceImpl myStoreLogUploda error:mul="+mul,e);
        }
        return msg;
    }

    /**
     * 修改我的门店密码
     * @param store
     * @return
     */
    @Override
    public ResponseMessage updateMyStorePassword(Store store) {
        logger.info("MyStoreinfoServiceImpl updateMyStorePassword params:store="+store);
        ResponseMessage msg = new ResponseMessage();
        msg.setFlag(false);
        msg.setCode(StatusCode.ERROR);
        try {
            if(null!=store.getId() && !"".equals(store.getId()) && null!=store.getPassword()
                    && !"".equals(store.getPassword())) {
                store.setPassword(Md5Util.encryptToMD5(store.getPassword()));
                Integer rows = mapper.updMyStoreinfo(store);
                if (rows > 0) {
                    msg.setFlag(true);
                    msg.setCode(StatusCode.OK);
                    msg.setMessage("update mystorePassword success");
                    msg.setData(rows);
                    logger.debug("MyStoreinfoServiceImpl updateMyStorePassword if(!null) result:msg=" + msg);
                } else {
                    msg.setMessage("update mystorePassword result is empty");
                    logger.debug("MyStoreinfoServiceImpl updateMyStorePassword if(null) result:store=" + store);
                }
            }else{
                msg.setMessage("update mystorePassword param is empty");
                logger.debug("MyStoreinfoServiceImpl updateMyStorePassword idnull result:store=" + store);
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setMessage("update mystorePassword is error");
            logger.error("MyStoreinfoServiceImpl updateMyStorePassword error parmas:store="+store,e);
        }
        return msg;
    }


}
